From: Adel Gadllah Date: Wed, 20 Oct 2010 20:41:54 +0000 (+0200) Subject: PopupSliderMenuItem: Implement mousewheel support X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~9627 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=3dbee0b833bd9c8de8d1c02ff842684d769457c1;p=gnome-shell.git PopupSliderMenuItem: Implement mousewheel support Allow changing the slider's value using the mousewheel. https://bugzilla.gnome.org/show_bug.cgi?id=632743 --- diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js index 6446c3237..cb17c021a 100644 --- a/js/ui/popupMenu.js +++ b/js/ui/popupMenu.js @@ -16,6 +16,8 @@ const Tweener = imports.ui.tweener; const Gettext = imports.gettext.domain('gnome-shell'); const _ = Gettext.gettext; +const SLIDER_SCROLL_STEP = 0.05; /* Slider scrolling step in % */ + function Switch() { this._init.apply(this, arguments); } @@ -181,6 +183,7 @@ PopupSliderMenuItem.prototype = { this.actor.set_child(this._slider); this._slider.connect('repaint', Lang.bind(this, this._sliderRepaint)); this._slider.connect('button-press-event', Lang.bind(this, this._startDragging)); + this._slider.connect('scroll-event', Lang.bind(this, this._onScrollEvent)); this._releaseId = this._motionId = 0; this._dragging = false; @@ -270,6 +273,20 @@ PopupSliderMenuItem.prototype = { return true; }, + _onScrollEvent: function (actor, event) { + let direction = event.get_scroll_direction(); + + if (direction == Clutter.ScrollDirection.DOWN) { + this._value = Math.max(0, this._value - SLIDER_SCROLL_STEP); + } + else if (direction == Clutter.ScrollDirection.UP) { + this._value = Math.min(1, this._value + SLIDER_SCROLL_STEP); + } + + this._slider.queue_repaint(); + this.emit('value-changed', this._value); + }, + _motionEvent: function(actor, event) { let absX, absY; [absX, absY] = event.get_coords();